package fr.inria.arles.temperatureManagement.android;

import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
import fr.inria.arles.temperatureManagement.communication.QueryProcessorCommunicator;
import fr.inria.arles.temperatureManagement.communication.TemperatureManagerCommunicator;
import static fr.inria.arles.temperatureManagement.android.DeviceProvider.*;

/**
 * Activity to change user's reference temperature setting.
 * 
 * @author ajay chhatwal
 */
public class ChangeTemp extends Activity {

	private String username, ID, partition;

	/** Handles event: Button reloginB clicked */
	private final OnClickListener changeBClicked = new OnClickListener() {
		public void onClick(View v) {
			EditText newTempET = (EditText) findViewById(R.id.newTempET);
			String temp = newTempET.getText().toString();
			try {
				QueryProcessorCommunicator.setTemp(queryProcessor, ID,
						partition, temp);
				TemperatureManagerCommunicator.setTemp(tempManager, partition,
						temp);
				finish();
			} catch (Exception e) {
				Context context = getApplicationContext();
				CharSequence text = "Exception:" + e;
				int duration = Toast.LENGTH_LONG;

				Toast toast = Toast.makeText(context, text, duration);
				toast.show();
				Log.e("Exception", e + "", e);
			}
		}
	};

	/**
	 * Called when the activity is first created.
	 * 
	 * @param savedInstanceState
	 *            the saved instance state
	 */
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.change_temp);
		Intent i = getIntent();
		username = i.getStringExtra("username");
		ID = i.getStringExtra("ID");
		partition = i.getStringExtra("partition");
		if (username != null) {
			TextView welcomeTV = (TextView) findViewById(R.id.welcomeChangeTempTV);
			welcomeTV.setText("Welcome " + username);
		}
		if (partition != null) {
			TextView partitionTV = (TextView) findViewById(R.id.partitionChangeTempTV);
			partitionTV.setText(partition);
		}

		Button changeB = (Button) findViewById(R.id.changeB);
		changeB.setOnClickListener(changeBClicked);
	}

	/**
	 * Called when the activity is first created.
	 * 
	 * @param menu
	 *            the Menu to be populated
	 */
	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		MenuInflater inflater = getMenuInflater();
		inflater.inflate(R.menu.options_menu, menu);
		return true;
	}

	/**
	 * Handles item selections
	 * 
	 * @param item
	 *            the selected MenuItem
	 */
	@Override
	public boolean onOptionsItemSelected(MenuItem item) {
		switch (item.getItemId()) {
		case R.id.settings:
			Intent intent = new Intent(this, Settings.class);
			startActivity(intent);
			return true;
		case R.id.exit:
			moveTaskToBack(true);
			return true;
		}
		return false;
	}

}